<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 数组/json

        //  map    映射:一个对一个
        // [18,67,98,25,17,96] => [false,true,true,false,false,true]


        // reduce 汇总: 一堆-->一个
        // 求平均值
        // let arr = [12, 5, 88, 37, 21, 91, 17, 24];
        // let ave = arr.reduce((tmp, item, index) => {
        //     if (index < arr.length - 1) {
        //         return tmp + item;
        //     } else { //最后一次迭代
        //         return (tmp + item) / arr.length;
        //     }
        // });
        // console.log(parseInt(ave));

        // filter  过滤:
        // forEach 遍历:


        // json---2变化
        // 1.简写: 名字和值一样的,可以省
        // 2.function可以不写

        // 1、
        // let a = 12;
        // let b = 5;
        // let json = {
        //     a,
        //     b
        // };
        // console.log(json);
        // 2、
        /*let json={
          a: 12,
          b: 5,
          show: function (){
            alert(this.a+this.b);
          }
        };*/
        // let json = {
        //     a: 12,
        //     b: 5,
        //     show() {
        //         alert(this.a + this.b);
        //     }
        // };
        // json.show();


        // Array.from 方法
        // 用于将两类对象转换为真正的数组：
        // 类似数组的对象（ 所谓类似数组的对象， 本质特征只有一点， 即必须有length属性。 
        // 因此， 任何有length属性的对象都可以通过Array.from方法转为数组） 
        // 和 可遍历的对象（ ES6新增的数据结构Set 和 Map）
        // let arrayLike = {
        //     '0': 'a',
        //     '1': 'b',
        //     '2': 'c',
        //     length: 3 // 必须带有length属性
        // };
        // let arr1 = Array.prototype.slice.call(arrayLike);
        // let arr2 = Array.from(arrayLike);
        // console.log(arr1);
        // console.log(arr2);

        // Array.prototype.slice用法 等同于[].slice.call()
        // 1. 从数组中抽取出新的数组；
        // 2. 用于类数组对象， 抽取出新的数组；
        // 3. 用于将字符串转为数组；

        // Array.from方法会将数组的空位转为undefined，也就是说，这个方法不会忽略空位
        // console.log(Array.from({
        //     length: 2
        // })); // [undefined, undefined]

        // Array.from 还可以接收第二个参数，作用类似于数组的map方法用来对每个元素进行处理，然后放入返回的数组之中
        // var obj = {
        //     '0': '1',
        //     '1': '2',
        //     '2': '3',
        //     length: 3 // 必须带有length属性
        // };
        // var arr = Array.from(obj, x => x * x)
        // console.log(arr); // [1, 4, 9]
    </script>
</body>

</html>